#pragma once

#include "IPrimitive.h"

namespace Torrent
{
    namespace Bencode
    {    
        template <class PrimitiveType>
        class Primitive : public IPrimitive
        {
        public:
            Primitive(void){};
            ~Primitive(void){};

            PrimitiveType getValue(){ return _value;};
            void setValue(PrimitiveType value){_value = value;};

            virtual void print(std::ostream& stream, bool debug = false) = 0;

        protected:
            PrimitiveType _value;
        };    
    } //namespace Bencode
} //namespace Torrent
